package com.xiaohe.controller;

import com.xiaohe.entity.User;
import com.xiaohe.service.UserService;
import com.xiaohe.service.UserServiceImpl;
import com.xiaohe.utils.R;
import com.xiaohe.utils.VerifyCodeUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Base64Utils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * 功能描述
 * @author 胡元山
 */
@RestController
@RequestMapping(value = "/api")
@CrossOrigin("http://localhost:8080")
@Slf4j
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 用户登录
     */
    @PostMapping("/news")
    public R login(@RequestBody User user) {
        try {
            User userDB = userService.login(user);
            return R.ok().data("status", true).data("msg", "登录成功").data("userDb", userDB);
        } catch (Exception e) {
            e.printStackTrace();
            return R.error().data("status", false).data("msg", e.getMessage());
        }
    }

    /**
     * 使用的注册
     */
//    @PostMapping("register")
//    public Map<String,Object> register(@RequestBody User user){
//        Map<String,Object> map = new HashMap<>();
//        if(userService.selectUserName(user.getUserUsername())!=null){
//            //用户存在
//            System.out.println("用户已存在！");
//            map.put("state", false);
//            map.put("msg", "该用户已存在");
//            System.out.println(map);
//        }else{
//            userService.register(user);
//            System.out.println("注册成功请登录！");
//            map.put("state", true);
//            map.put("msg", "提示: 注册成功!");
//            System.out.println(map);
//        }
//        return map;
//    }
    @PostMapping("register")
    public R register(@RequestBody User user) {
        if (userService.selectUserName(user.getUserUsername()) != null) {
            //用户存在
            System.out.println("用户已存在！");
            return R.error().data("status", false);
        } else {
            userService.register(user);
            System.out.println("注册成功请登录！");
            return R.ok().data("status", true).data("msg", "登录成功");
        }
    }


}



        /**
         * 生成验证码
         * */
//    @GetMapping(value = "getImage")
//    public String getImageCode(HttpServletRequest request) throws IOException {
//        //使用工具类生成验证码
//        String code = VerifyCodeUtils.generateVerifyCode(4);
//        //将生成的验证码放入到servletContext作用域
//        request.getServletContext().setAttribute("code",code);
//
//        //将图片转为base64
//        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//        VerifyCodeUtils.outputImage(100,30,byteArrayOutputStream,code);
//        String s = "data:image/png;base64,"+Base64Utils.encodeToString(byteArrayOutputStream.toByteArray());
//
//        return s;
//    }

        /**
         * 用户注册
         * */
//    @PostMapping(value = "wregister")
//   public Map<String,Object>  register(@RequestBody User user,
//                                       HttpServletRequest request,
//                                       String code){
//        Map<String,Object> map=new HashMap<>();
//        try {
//            //判断验证码输入是否正确
//            String key = (String) request.getServletContext().getAttribute("code");
//            if(key.equalsIgnoreCase(code)){
//                //根据用户名判断该用户是否存在
//                User userList=userService.findUserByName(user.getUserUsername());
//                if(userList !=null){
//                    map.put("state", false);
//                    map.put("msg", "该用户已存在");
//                }else{
//                    userService.register(user);
//                    map.put("state", true);
//                    map.put("msg", "提示: 注册成功!");
//
//                }
//
//            }else{
//                throw  new RuntimeException("验证码错误");
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            map.put("state", false);
//            map.put("msg", "提示: 注册失败!");
//        }
//        System.out.println(map);
//       return map;
//    }


